package com.hxzy.config;

import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.amqp.rabbit.retry.MessageRecoverer;
import org.springframework.amqp.rabbit.retry.RepublishMessageRecoverer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * 消费者消费次数完以后的如何处理这个消息
 */
@Configuration
public class RabbitMqErrorConfig {


    /*
      RejectAndDontRequeueRecoverer：     重试耗尽后，直接reject，丢弃消息。默认就是这种方式 (如果设定了次数)

      ImmediateRequeueMessageRecoverer：  重试耗尽后，返回nack，消息重新入队 (默认次数是  -1的时候)

      RepublishMessageRecoverer           发送到指定的交换机
     */


    /**
     * 需要配置
     *     template:
     *       retry:
     *         enabled: true
     *
     * 把消息转发给死信队列
     * @param rabbitTemplate
     * @return
     */
    @Bean
    public MessageRecoverer republishMessageRecoverer(RabbitTemplate rabbitTemplate){
        return new RepublishMessageRecoverer(rabbitTemplate, "error_direct", "error");
    }






}
